/**
******************************************************************************
 * @file    param_config.h
 * @brief   参数配置模块头文件，用于从配置文件读取PID参数等配置
 ******************************************************************************
 */
#ifndef PARAM_CONFIG_H
#define PARAM_CONFIG_H


#include "controller.h"
#include "bsp_can.h"
#include "motor_def.h"


typedef enum {
  ROBOT_TYPE_infantry = 0,
}RobotType_e;

typedef struct {
  PID_Init_Config_s speed_PID;
  PID_Init_Config_s current_PID;
  PID_Init_Config_s follow_PID;
  Motor_Type_e motor_type;
} ChassisParams_t;

typedef struct {
  PID_Init_Config_s pitch_angle_PID;
  PID_Init_Config_s pitch_speed_PID;
  PID_Init_Config_s yaw_angle_PID;
  PID_Init_Config_s yaw_speed_PID;
  Motor_Type_e motor_type;
} GimbalParams_t;

typedef struct {
  PID_Init_Config_s friction_speed_PID;
  PID_Init_Config_s friction_current_PID;
  Motor_Type_e friction_motor_type;
  PID_Init_Config_s loader_angle_PID;
  PID_Init_Config_s loader_speed_PID;
  PID_Init_Config_s loader_current_PID;
  Motor_Type_e loader_motor_type;
} ShootParams_t;

typedef struct {
  ChassisParams_t chassis_params;
  GimbalParams_t gimbal_params;
  ShootParams_t shoot_params;
} RobotParams_t;

// 函数声明
void ParamConfigInit(void);
RobotParams_t* GetRobotPIDParams(void);

#endif // PARAM_CONFIG_H
